Docker 워크플로우: Dockerfile Docker 이미지 Docker 컨테이너

Docker Best Practice

1. slim 또는 alpine 베이스 이미지 사용

  • 일반 이미지보다 크기가 훨씬 작음
  • 보안성 향상, 자원 소비 감소

2. latest 태그 사용 지양

  • 특정 버전 명시 권장
  • 버전 변경 시 예상치 못한 문제 방지

3. 멀티 스테이지 빌드 활용

  • 최종 이미지 크기 추가 감소
  • 빌드 환경과 실행 환경 분리

4. HEALTHCHECK 포함

  • 컨테이너 정상 작동 여부 확인 가능
  • Docker Compose, Kubernetes 배포 시 유용

5. .dockerignore 사용

  • 불필요한 파일 빌드 컨텍스트에서 제외
  • Dockerfile 간결화, 민감 정보 유출 방지

6. --mount=type 옵션 활용

RUN --mount=type=cache,target=/root/.cache/go-build \
  • 특정 RUN 명령에 범위 한정된 마운트
  • 빌드 성능 향상, 안전한 비밀 정보 전달 가능

Inner-Loop Developer Workflow

  • 로컬 개발에 컨테이너 사용
  • 개발 환경과 프로덕션 환경 간 불일치 감소

Docker 도구 및 기능

Docker Init

  • Docker Desktop 4.1+ 버전에서 사용 가능
  • Docker 관련 파일 생성 간소화

Compose Watch

  • 파일 변경 감지 및 자동 처리
  • 모드: Sync, Rebuild, Sync+restart
  • 컨테이너 내 실시간 개발 가능

Compose Profiles

  • 환경별 다른 서비스 세트 정의 가능
  • 예: 개발 환경에만 phpMyAdmin 포함
  • --profile 플래그로 활성화

Docker Scout

  • 다양한 취약점 스캐닝 도구 결과 집계
  • 이미지 보안 문제 통합 뷰 제공
  • 오픈소스 종속성 취약점 식별
  • 주의: Scout는 직접 스캔 안 함, 타 도구 결과 수집/제시